From: Alexander Mikhaylenko Date: Sat, 27 Nov 2021 12:53:14 +0000 (+0500) Subject: background: Support dark wallpapers X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~530^2^2~114 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a619eb55bf685f1e99140baf07e04f5dcd5c7b3b;p=gnome-shell.git background: Support dark wallpapers See https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1174 Part-of: --- diff --git a/js/ui/background.js b/js/ui/background.js index 1ddb9d6f3..281ef37e6 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -111,6 +111,10 @@ const SECONDARY_COLOR_KEY = 'secondary-color'; const COLOR_SHADING_TYPE_KEY = 'color-shading-type'; const BACKGROUND_STYLE_KEY = 'picture-options'; const PICTURE_URI_KEY = 'picture-uri'; +const PICTURE_URI_DARK_KEY = 'picture-uri-dark'; + +const INTERFACE_SCHEMA = 'org.gnome.desktop.interface'; +const COLOR_SCHEME_KEY = 'color-scheme'; var FADE_ANIMATION_TIME = 1000; @@ -227,11 +231,13 @@ var Background = GObject.registerClass({ Signals: { 'loaded': {}, 'bg-changed': {} }, }, class Background extends Meta.Background { _init(params) { - params = Params.parse(params, { monitorIndex: 0, - layoutManager: Main.layoutManager, - settings: null, - file: null, - style: null }); + params = Params.parse(params, { + monitorIndex: 0, + layoutManager: Main.layoutManager, + settings: null, + file: null, + style: null, + }); super._init({ meta_display: global.display }); @@ -244,6 +250,8 @@ var Background = GObject.registerClass({ this._cancellable = new Gio.Cancellable(); this.isLoaded = false; + this._interfaceSettings = new Gio.Settings({ schema_id: INTERFACE_SCHEMA }); + this._clock = new GnomeDesktop.WallClock(); this._timezoneChangedId = this._clock.connect('notify::timezone', () => { @@ -262,6 +270,10 @@ var Background = GObject.registerClass({ this._settingsChangedSignalId = this._settings.connect('changed', this._emitChangedSignal.bind(this)); + this._colorSchemeChangedSignalId = + this._interfaceSettings.connect('changed::%s'.format(COLOR_SCHEME_KEY), + this._emitChangedSignal.bind(this)); + this._load(); } @@ -290,6 +302,10 @@ var Background = GObject.registerClass({ this._settings.disconnect(this._settingsChangedSignalId); this._settingsChangedSignalId = 0; + if (this._colorSchemeChangedSignalId !== 0) + this._interfaceSettings.disconnect(this._colorSchemeChangedSignalId); + this._colorSchemeChangedSignalId = 0; + if (this._changedIdleId) { GLib.source_remove(this._changedIdleId); this._changedIdleId = 0; @@ -546,6 +562,8 @@ var BackgroundSource = class BackgroundSource { this._monitorsChangedId = monitorManager.connect('monitors-changed', this._onMonitorsChanged.bind(this)); + + this._interfaceSettings = new Gio.Settings({ schema_id: INTERFACE_SCHEMA }); } _onMonitorsChanged() { @@ -576,7 +594,12 @@ var BackgroundSource = class BackgroundSource { } else { style = this._settings.get_enum(BACKGROUND_STYLE_KEY); if (style != GDesktopEnums.BackgroundStyle.NONE) { - let uri = this._settings.get_string(PICTURE_URI_KEY); + const colorScheme = this._interfaceSettings.get_enum('color-scheme'); + const uri = this._settings.get_string( + colorScheme === GDesktopEnums.ColorScheme.PREFER_DARK + ? PICTURE_URI_DARK_KEY + : PICTURE_URI_KEY); + file = Gio.File.new_for_commandline_arg(uri); } }